The approaches described in this section could be pursued, but are not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated herein, the approaches described in this section are not prior art to the claims in this application and are not admitted to be prior art by inclusion in this section.
Currently, portable handheld devices such as smartphones, tablet computers, and other devices are in wide use around the world. Many individuals carry such devices and use them for a variety of functions. These devices can enable both cellular and Wi-Fi® communications and provide users with the ability to access content almost instantaneously. In particular, these devices can run application software, also known as a “mobile application,” a “mobile app,” or simply an “app,” which facilitate user access to various functionalities of these devices, or content stored on these devices or a remote server.
Mobile applications were originally intended for general productivity increase and information retrieval. Such applications provided email, calendars, contacts, and weather information. However, public demand and the availability of developer tools have driven rapid expansion of mobile applications into other categories such as mobile games, navigation and location-based services, banking, order-tracking, fitness related monitoring and tracking, ticket purchases, and others. Mobile applications are usually available through application distribution platforms, such as Apple App Store®, Google Play®, Windows Phone Store®, and Blackberry App World®, which correspond to operating systems installed on mobile devices such as an iPhone®, an Android® phone, a Windows Phone®, and a Blackberry®.
The diversity of these devices can present a challenge to producers who want to develop content for as wide an audience as possible, because the mobile devices have different operating systems (OS) and require different versions of mobile applications to be written for different platforms. In other words, software developers need to create hardware/OS platform specific mobile applications for each type of mobile device, with similar look, same functionality, and ability to access the same content. For example, a software developer should use Objective C language to create a native mobile application for iOS® devices (e.g., iPhone®), Java® to create a native mobile application for Android® devices, and .NET® language for Windows® phones. This approach results in different applications, which are not portable across other OS platforms.
Web-based applications can be used to address portability issues. Web applications can be designed using HTML5 (HyperText Markup Language 5), CSS (Cascading Style Sheets), and/or Javascript® and other scripting technologies such as Ruby®, which are often hardware/OS platform independent as they can be run with a web browser. Web applications can enable software developers to create a single application suitable for all major OS platforms. Existing libraries such as jQuery Mobile®, Sencha Touch®, or similar can also be used to make this task easier on the client/browser side, whereas on the server side there are yet more choices of scripting languages such as PHP, .NET, Perl®, Python®, Ruby® and other languages supported by means of Simple Object Access Protocol (SOAP) or Representational state transfer (REST) protocols. However, web applications do not provide the ease of use and the look and feel of native mobile applications, nor can they leverage and keep up with rapidly changing core functionalities of the device such as speech input, Global Positioning System (GPS), camera, and operating systems.